<?php

namespace Medicina\KernelBundle\Entity;

use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints as DoctrineAssert;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
use Symfony\Component\Security\Core\SecurityContext;

/**
 * Medicina\KernelBundle\Entity\Impugnacion
 * @ORM\HasLifecycleCallbacks
 * @ORM\Table(name="impugnacion")
 * @ORM\Entity
 */
class Impugnacion {

    /**
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     *
     * @ORM\Column(name="codigo", type="string", nullable=true)
     */
    private $codigo;

    /**
     *
     * @ORM\Column(name="aceptada", type="boolean", nullable=true)
     */
    private $aceptada;

    /**
     *
     * @ORM\Column(name="fechaRecibida", type="datetime", nullable=true)
     */
    private $fechaRecibida;

    /**
     *
     * @ORM\Column(name="observacion", type="text", nullable=true)
     */
    private $observacion;

  

    /**
     *
     * @ORM\Column(name="fechaResolucion", type="date", nullable=true)
     */
    private $fechaResolucion;

    /**
     * @ORM\ManyToOne(targetEntity="Concurso", inversedBy="impugnaciones" , cascade={"persist"})
     * @ORM\JoinColumn(name="concurso_id", referencedColumnName="id")
     * 
     */
    private $concurso;

    /**
     * @ORM\ManyToOne(targetEntity="Oficina", inversedBy="impugnaciones", cascade={"persist"})
     * @ORM\JoinColumn(name="oficina_id", referencedColumnName="id")
     * 
     */
    private $oficina;
    public $oficinaQueCargo;

    public function __construct() {

        $this->aceptada = false;
        $this->setFechaRecibida(new \DateTime);
    }

    public function getOficinaQueCargo() {
        return $this->oficinaQueCargo;
    }

    public function setOficinaQueCargo($oficina) {
        $this->oficinaQueCargo = $oficina;
    }

    /**
     * @ORM\PrePersist()
     * @ORM\PreUpdate()
     */
    public function preUpdate() {
        if ($this->getOficina() === null and $this->getOficinaQueCargo() != null) {
            $this->setOficina($this->getOficinaQueCargo());
        }
    }

    public function getId() {
        return $this->id;
    }

    public function getCodigo() {
        return $this->codigo;
    }

    public function setCodigo($cod) {
        $this->codigo = $cod;
    }

    public function setFechaRecibida($fechaRecibida) {
        $this->fechaRecibida = $fechaRecibida;
    }

    public function getFechaRecibida() {
        return $this->fechaRecibida;
    }

    public function setAceptada($status) {
        $this->aceptada = $status;
    }

    public function getAceptada() {
        return $this->aceptada;
    }

    public function setObservacion($observacion) {
        $this->observacion = $observacion;
    }

    public function getObservacion() {
        return $this->observacion;
    }



    public function setFechaResolucion($fechaResolucion) {
        $this->fechaResolucion = $fechaResolucion;
    }

    public function getFechaResolucion() {
        return $this->fechaResolucion;
    }

    public function setConcurso(\Medicina\KernelBundle\Entity\Concurso $concurso) {
        $this->concurso = $concurso;
    }

    public function getConcurso() {
        return $this->concurso;
    }

    public function setOficina(\Medicina\KernelBundle\Entity\Oficina $oficina) {
        $this->oficina = $oficina;
    }

    public function getOficina() {
        return $this->oficina;
    }

    public function getJsonForAjaxEdit() {
        return $output = array(
            'codigo' => $this->getCodigo(),
            'fechaRecibida' => $this->getfechaRecibida()->format('d/m/Y'),
            'fechaResolucion' => $this->getfechaResolucion()->format('d/m/Y'),
             'aceptada' => $this->getAceptada(),
            'observacion' => $this->getObservacion(),
        );
    }

}